package block

import (
	"blockchain.com/part_5/wallet"
	"bytes"
)

// ---------------交易输入------------

// 四、 （1）重定义交易输入
type TXInput struct {
	Txid		[]byte// 存储之前交易的ID
	Vout		int// // 该输出在那笔交易中所有输出的索引（一笔交易可能有多个输出，需要有信息明确指明是具体的哪一个）
	Signature   []byte// 签名
	PubKey 		[]byte// 公钥
}

/*
四、（2）
检查地址是否初始化交易:检查输入使用了指定密钥来解锁一个输出
注意:输入存储的是原生的公钥（也就是没有被哈希的公钥），但是这个函数要求的是哈希后的公钥
*/
func (in *TXInput)UsesKey(pubKeyHash []byte)bool  {
	lockingHash := wallet.HashPubKey(in.PubKey)

	return bytes.Compare(lockingHash,pubKeyHash) == 0
}

